查看原文
其他

如何进行数据仓库的数据架构设计?

ruby ruby的数据漫谈
2024-09-27

摘要:在当今的数字化时代,数据已成为企业的重要资产,其价值的实现依赖于高效、可靠和可扩展的数据系统。因此,进行数据仓库的数据架构设计变得尤为重要。本文将从数据架构设计的重要性、设计流程以及包括数据定义、数据模型设计、数据存储选择等关键步骤进行详细介绍。


  • 数据架构设计的重要性‍‍‍‍‍‍‍

  • 数据架构设计的步骤‍‍‍‍‍‍‍

  • 数据模型设计的关键原则‍‍


01

数据架构设计的重要性‍‍‍‍‍


数据架构设计是数据处理系统的基础,它涉及到数据的组织方式、存储结构、交互逻辑以及安全控制等方面的设计和规划。一个良好的数据架构能够确保数据的准确性、一致性、可靠性和高效性,为企业提供更好的决策支持和服务。此外,数据架构是企业架构的重要支柱之一,通过它可以成功地执行业务策略。在成功的数据架构中,基于业务流程的概念设计是最重要的组成部分。



02

数据架构设计的流程


根据业务蓝图规划数据资产蓝图‍‍‍‍‍‍‍‍


在数据架构设计的第一步是根据业务蓝图,规划数据资产蓝图。在精益数字化转型的过程中,构建数据资产的第一步是根据企业的战略目标形成数据分析的业务目标。这一过程要求企业首先明确其数字化转型的目标,这包括捕获增长、提升价值等长期目标。明确这些目标后,企业需要从战略层次全局看待业务,构建数据分析的框架。这意味着企业需要从业务的角度出发,明确业务场景,确定分析目标,并构建分析体系。在《如何进行数据资产盘点?》一文中也提到如何构建资产蓝图。这个也业务分析过程。数据资产蓝图是数据架构师开展数据架构设计的开始也是目标。‍‍


数据定义



数据的基本结构分三个层次,反映了观察数据的三种不同角度。

(1)概念数据层。它是数据的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据所有对象的逻辑关系,而不是它们的物理情况。

(2)逻辑数据层。它是用户所看到和使用的数据,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。

(3)物理数据层。它是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。


有数据资产蓝图定义了数据分析的业务域,也是数据主题域。在主题域名确定之后,则可以继续细化概念模型,逻辑模型和物理模型。


数据模型设计‍‍

1、概念模型

概念数据模型是最终用户对数据存储的看法,反映了最终用户综合性的信息需求,它以数据类的方式描述企业级的数据需求,数据类代表了在业务环境中自然聚集成的几个主要类别数据。

概念数据模型的内容包括重要的实体及实体之间的关系。在概念数据模型中不包括实体的属性,也不用定义实体的主键。这是概念数据模型和逻辑数据模型的主要区别。概念数据模型的目标是统一业务概念,作为业务人员和技术人员之间沟通的桥梁,确定不同实体之间的最高层次的关系。

根据业务域的划分,梳理跨业务域的端到端的业务流程,从而梳理出大的对象之间的关系和小的业务流程。

例如,用户(user)E-R图


2、逻辑模型

逻辑数据模型反映的是系统分析设计人员对数据存储的观点,是对概念数据模型进一步的分解和细化。

逻辑数据模型是根据业务规则确定的,关于业务对象、业务对象的数据项及业务对象之间关系的基本蓝图。 逻辑数据模型的内容包括所有的实体和关系,确定每个实体的属性,定义每个实体的主键,指定实体的外键,需要进行范式化处理。   

逻辑数据模型的目标是尽可能详细的描述数据,但并不考虑数据在物理上如何来实现。逻辑数据建模不仅会影响数据库设计的方向,还间接影响最终数据库的性能和管理。如果在实现逻辑数据模型时投入得足够多,那么在物理数据模型设计时就可以有许多可供选择的方法。

解决端到端的业务流程梳理出大量的小流程和对象关系,进一步梳理出各个业务域的业务对象及其行为和属性。

3、物理模型

物理数据模型是在逻辑数据模型的基础上,考虑各种具体的技术实现因素,进行数据库体系结构设计,真正实现数据在数据库中的存放。

物理数据模型的内容包括确定所有的表和列,定义外键用于确定表之间的关系,基于用户的需求可能进行发范式化等内容。在物理实现上的考虑,可能会导致物理数据模型和逻辑数据模型有较大的不同。

物理数据模型的目标是指定如何用数据库模式来实现逻辑数据模型,以及真正的保存数据。

常用的设计范式,以及对于数据量大的业务,在数据模型层面不处理表之间的主外键之间的关系。

主要将逻辑模型的各个业务对象及之间的关系,以表、主外键及关联表的方式表示。针对各个逻辑模型勾勒出各个域的ER模型。

而数据仓库的数据模型设计可以具体参考文章《如何进行数据仓库的数据模型的设计?》。


数据存储选择

根据数据的实际使用频率选择合适的存储类型,并考虑不同存储需求进行组合数据库的策略,首先需要进行详细的需求分析,包括数据需求分析、功能需求分析(数据处理需求分析、业务规则需求分析)、性能需求分析(数据操作响应时间或数据访问响应时间、系统吞吐量、允许并发访问的最大用户数、每秒TPS代价值)以及其他需求分析(存储需求分析、安全性等)。这一步骤是基础,确保了对数据库系统有全面的理解。

对于大数据存储解决方案,可以考虑计算存储分离的模式,这种模式下计算资源可以根据需求按需扩容或缩容,而存储资源则可以无感扩容,无需预留和绑定计算与存储配比。这种方式适用于处理大量数据,尤其是当数据访问模式不固定时,能够提供更高的灵活性和效率。

在选择存储类型时,还需要考虑数据的冷热程度。例如,在大数据分析中,可以通过对存储数据进行冷热分层来降低大数据分析资源的成本。这意味着,对于频繁访问的数据,可以选择更快的存储类型;而对于访问频率较低的数据,则可以选择成本更低的存储类型。

在实际应用中,还可以结合多种存储方式和技术,比如oss作为标准存储、低频冷存储等,而高频访问,需要进行实时数据分析,复杂数据处理的可以选择olap数据库。同时,也可以考虑使用NoSQL数据库如HBase、Cassandra、Redis等,这些数据库适用于不同的业务场景和数据访问模式。

总之,选择合适的存储类型并组合数据库策略需要综合考虑数据的实际使用频率、性能需求、成本效益以及安全性等因素。通过详细的需求分析和灵活运用各种存储技术和产品,可以构建出既高效又经济的数据库系统。



03

数据模型设计的原则‍‍


在数据模型设计过程中,遵循以下最佳实践可以帮助满足企业的业务需求:

  1. 需求分析:首先进行需求分析,明确业务需求和数据模型的目标。这是设计过程的基础,确保后续设计工作能够准确地反映业务需求。

  2. 一表一用原则:遵循“一表一用”的原则,即每个表只存储一个实体的信息,避免数据冗余,提高数据的一致性和准确性。

  3. 第三范式(3NF):确保数据库表达到第三范式,消除表中的非主属性对键的部分依赖和传递依赖,减少数据冗余,提高查询效率。

  4. 消除冗余:通过合理设计数据库结构,避免数据冗余,如使用外键约束来维护关系型数据的一致性。

  5. 动态适应性:设计时考虑数据库的动态适应性,以便随着业务需求的变化进行灵活调整。

  6. 禁止使用存储过程、视图、触发器:虽然这些技术可以提高数据库的性能和安全性,但在某些情况下可能会导致维护困难和性能问题,因此需要谨慎使用。

  7. 面向对象的设计思路:采用面向对象的设计思路,如E-R图绘制、模型转换等,有助于更好地组织和管理数据。

  8. 数据库和表命名规范:遵循一定的命名规范,如使用有意义的名称来描述数据库和表,这有助于提高数据库的可读性和可维护性。

  9. 索引优化:合理设计索引,既要考虑到索引带来的性能提升,也要注意避免过度索引导致的维护成本增加。

  10. 安全性考虑:在设计过程中考虑数据的安全性,采取措施保护数据不被未授权访问或泄露。

通过遵循上述最佳实践,可以设计出既高效又安全的数据模型,满足企业的业务需求。



欢迎加入【数据行业交流群】社群,长按以下二维码加入专业微信群,商务合作加微信备注商务合作,AIGC应用开发交流入群备注AIGC应用




往期数据平台历史热门文章:

基于DataOps的数据开发治理:实现数据流程的自动化和规范化

数据平台:湖仓一体、流批一体、存算分离的核心问题及原因解析

数据治理体系该怎么建设?

实时数仓&流批一体技术发展趋势

数据仓库、数据中台、大数据平台的关系?

数字化转型如何促进业务的发展

数据中台中的核心概念解析

数据治理中的数据标准的作用?

全面数字化转型:打造全新营销模式

一图展示数据中台的数据流图

揭秘数据治理系统的数据流程图

往期AIGC历史热门文章:

AIGC系列之一-一文理解什么是Embedding嵌入技术

十大AIGC文生视频产品介绍

九大最热门的开源AI Agent框架

AutoGen零代码构建⾃⼰的智能助理


继续滑动看下一个
ruby的数据漫谈
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存